/* register_option.c COPYRIGHT KIC LIMITED 2011 
 *
 * Date         Corp.   Name           Note
 * ---------- ------- ------------ -------------------
 * 2011.10.25 KIC      J.TANAKA      First Modification
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "common.h"

#ifdef DEBUG /* デバッグコード開始 */
main(int argc, char *argv[]){
	option_t *optp = register_option(argc, argv);
	/* 結果の表示  */
	printf("input_file=%s, output_file=%s, config_file=%s\n",
		optp->input_file, optp->output_file, optp->config_file);
		
	return 0;

}

# endif /* デバッグ用コード終了 */

/* オプションで指定したパラメータを登録する
*args 
* argc 引数の総個数
* argv 引数の文字列を指すポインタの配列
*Return Value
* 登録したオプションへのポインタ
* 　option_t* 正常終了
* 　NULL      異常終了
*/
option_t* register_option(int argc, char *argv[]){
	int ch; /* オプション */
	/* メモリー確保 */
	option_t *optp = (option_t *)malloc(sizeof(option_t));

	/* オプションパラメータが存在する間、ループ*/
	while((ch = getopt(argc, argv, "i:o:c:")) != -1){
		switch(ch){
		case 'i':/* input_fileを登録 */
			strcpy(optp->input_file, optarg);
			break;			
		case 'o':/* output_fileを登録 */
			strcpy(optp->output_file, optarg);
			break;
		case 'c':/* config_fileを登録 */
			strcpy(optp->config_file, optarg);
			break;			
		case '?':/* 不正なオプション */
			printf("unknown\n");
			break;
		}
	}
	return optp;
}

